package cn.demoncat.util.lang.entity;

import java.util.*;

/**
 * Object类型的List
 * 
 * @author 延晓磊
 *
 * @since 2019年5月17日
 */
public class ListObj extends ArrayList<Object>{
 
	private static final long serialVersionUID = 1L;

	/**
	 * 空，不可变
	 */
	public static final List<Object> EMPTY = new ListObj();
	
	/**
	 * 实例化
	 * 
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2018年11月21日
	 */
	public static ListObj getInstance(Object... value) {
		ListObj list = new ListObj();
		if (value != null && value.length > 0) {
			list.addAll(Arrays.asList(value));
		}
		return list;
	}

	/**
	 * to array
	 *
	 * @param list
	 * @return
	 *
	 * @author 延晓磊
	 *
	 * @since 2018年11月21日
	 */
	public static Object[] toArr(List<Object> list){
		return list.toArray(new Object[0]);
	}

	/**
	 * to array
	 *
	 * @return
	 *
	 * @author 延晓磊
	 *
	 * @since 2018年11月21日
	 */
	public Object[] toArr(){
		return toArr(this);
	}

	/**
	 * 添加
	 *
	 * @param list
	 * @return
	 *
	 * @author 延晓磊
	 * @since 2021年03月03日
	 */
	public ListObj push(Collection<Object> list){
		this.addAll(list);
		return this;
	}

	/**
	 * 添加
	 *
	 * @param value
	 * @return
	 *
	 * @author 延晓磊
	 * @since 2021年03月03日
	 */
	public ListObj push(Object ... value){
		if (value != null && value.length > 0) {
			Collections.addAll(this, value);
		}
		return this;
	}

}
